import axios from 'axios'
import { useUserStore } from '../store/user'
import { ElMessage } from 'element-plus'

const service = axios.create({
  baseURL: '/api',  // 使用相对路径，让Vite代理处理
  timeout: 10000
})

service.interceptors.request.use(config => {
  const userStore = useUserStore()
  if (userStore.token) {
    config.headers['Authorization'] = 'Bearer ' + userStore.token
  }
  return config
})

service.interceptors.response.use(
  res => {
    if (res.data.code === 200) {
      return res.data
    } else {
      ElMessage.error(res.data.msg || '请求失败')
      return Promise.reject(res.data)
    }
  },
  err => {
    if (err.response) {
      switch (err.response.status) {
        case 400:
          ElMessage.error('请求错误！')
          break
        case 401:
          ElMessage.error('未授权，请重新登录！')
          const userStore = useUserStore()
          userStore.clearToken()
          break
        case 403:
          ElMessage.error('拒绝访问！')
          break
        case 404:
          ElMessage.error('请求地址出错！')
          break
        case 500:
          ElMessage.error('服务器内部错误！')
          break
        default:
          ElMessage.error(err.response.data.message || '未知错误！')
      }
    } else if (err.message === 'Network Error') {
      ElMessage.error('网络错误，请检查网络连接！')
    } else if (err.code === 'ECONNABORTED') {
      ElMessage.error('请求超时，请稍后再试！')
    } else {
      ElMessage.error('请求失败，请稍后再试！')
    }
    return Promise.reject(err)
  }
)

export default service 